package car.aistar.dao;

import car.aistar.dto.BrandAndPrice;
import car.aistar.dto.TqxCarInfo;
import car.aistar.entity.CarDetail;
import car.aistar.entity.Seller;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * (CarDetail)表数据库访问层
 *
 * @author makejava
 * @since 2020-10-02 19:05:00
 */
public interface CarDetailDao {

    /**
     *@Author 许华钢
     *@Description 管理员页面中对车辆的全局搜索
     *@Date 7:03 2020/10/8
     *@Param
     *@return
     **/
    @Select("select * from car_detail where concat(id,br_id,st_id,c_photo,c_age,c_oprice,c_price,c_desc,c_status,c_createDate,c_mileage,c_seat,c_cus,c_use,c_gear,c_drive,c_paifang,c_insure,c_Registration,c_cheak,car_carNumber,car_count,sal_id)  like '%${value}%'")
    List<CarDetail> findAllCarDetail(String search);


    /**
    *@Author 肖相荣
    *@Description //TODO 增加findall方法,通过销售人员id查找
    *@Date 15:08 2020/10/4
    *@Param
    *@return
    **/
    @Select("select * from car_detail where sal_id = ${value}")
    List<CarDetail> findAll(Long id);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    CarDetail queryById(Long id);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<CarDetail> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param carDetail 实例对象
     * @return 对象列表
     */
    List<CarDetail> queryAll(CarDetail carDetail);

    /**
     * 新增数据
     *
     * @param carDetail 实例对象
     * @return 影响行数
     */
    int insert(CarDetail carDetail);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<CarDetail> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<CarDetail> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<CarDetail> 实例对象列表
     * @return 影响行数
     */
    int insertOrUpdateBatch(@Param("entities") List<CarDetail> entities);

    /**
     * 修改数据
     *
     * @param carDetail 实例对象
     * @return 影响行数
     */
    int update(CarDetail carDetail);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Long id);

    @Select("select distinct c_gear from car_detail")
    List<String> findCgear();

    @Select("select distinct c_paifang from car_detail")
    List<String> findCpaifang();

    @Select("select distinct c_cus from car_detail ")
    List<String> findCcus();

    @Select("select distinct c_mileage from car_detail ")
    List<Integer> findCmileage();

    @Select("select distinct c_seat from car_detail ")
    List<Integer> findCseat();

    @Select("select distinct c_age from car_detail ")
    List<Integer> findAge();


//    List<BrandAndPrice> findCarPrice();
}